Nowadays, distributed processing is generally performed in which multiple computers connected to a network cooperate to process one job in a distributed manner. The distributed processing of a job conventionally necessitates the existence of a server that grasps the processing capabilities of all computers connectable to a network in advance for determination of allocation of the job to the computers.
The server specifies the magnitude of the load of the job and the excess processing capability (computing resource) of each computer connected to the network at the time of start of the distributed processing, successively allocates computers having excess processing capabilities corresponding to the load, and receives execution results of the job from the allocated computers.
With the conventional distributed processing method that requires a server, it is extremely difficult to swiftly grasp the excess processing capabilities of computers, which are connected to or disconnected from a network at an arbitrary point in time, at the server. Also, the server needs to receive execution results of a job from the computers, which have been requested for distributed processing of the job, and transfer the received results to a requester of the job, which increases overhead of the server. Therefore, there has frequently occurred such a problem that a time necessary for execution of a job and a time necessary for data transmission through a network substantially increases.
A principle object of the present invention is to provide a mechanism for distributed processing with which it becomes possible to solve the conventional problem described above.